Branch Behavior of Java Runtime Systems and its Microarchitectural Implications
نویسندگان
چکیده
Java programs are becoming increasingly prevalent on numerous platforms ranging from embedded systems to high-end servers. Dynamic translation (interpretation and compilation), frequent calls to native interface libraries or operating system kernel services and abundant usage of virtual methods by Java programs can complicate the intrinsic predictability of the control flows that can be exploited by an ILP machine. An in-depth look and understanding of the implications on the underlying microarchitecture can either guide architects to design efficient Java processors or finely tune the performance of a Java run time system on general purpose, wide issue machines. To our knowledge, this paper presents the first insight on branch behavior of a standard JVM running on a commercial operating system using real workloads. Employing a complete system simulation environment, we profile and quantify the performance of branch prediction structures for both user and kernel executions. The impact of different JVM styles (JIT compiler and interpreter) on branch behavior is also studied. We find that: (1) kernel instructions and kernel branches play an important role in the execution of a Java program; (2) the studied JVM contains fairly large number of static conditional branches with an average of 38K in JIT mode and 30K in interpreter mode, as opposed to 5.5K in SPECInt95; (3) a major part of the dynamic indirect branches are multiple target (polymorphic) branches; (4) kernel and user codes in a Java run time system use the underlying speculative mechanisms in different styles. We propose a split branch predictor structure that separates branch instruction stream into kernel and user parts based on the processor’s execution mode and use an optimized and cost-effective prediction mechanism for each. Simulations using SPECjvm98 show this technique improves prediction accuracy by reducing destructive branch aliasing between kernel and user codes. Since this scheme requires the access to only one of these smaller modules (kernel or user) for a given branch instruction mode, it also results in energy savings.
منابع مشابه
The Impact of Java Applications at Microarchitectural Level from Branch Prediction Perspective
The portability, the object-oriented and distributed programming models, multithreading support and automatic garbage collection are features that make Java very attractive for application developers. The main goal of this paper consists in pointing out the impact of Java applications at microarchitectural level from two perspectives: unbiased branches and indirect jumps/calls, such branches li...
متن کاملInvestigating the Interaction between Java Programs and Virtual Machines at the Microarchitectural Level
In recent years, Java workloads are becoming increasingly prominent on the entire scale of computing devices, ranging from small PDA-like systems to high-end web servers. It becomes thus increasingly important to understand the implications of all the aspects involved when running Java applications when a system is designed. This means that first of all, the interactions between the Java applic...
متن کاملImproving Branch Predictability in Java Processing
Java programs are becoming increasingly prevalent on numerous platforms ranging from embedded systems to enterprise servers. Dynamic translation (interpretation and compilation), frequent calls to native interface libraries or OS kernel services and abundant usage of virtual methods by Java programs can complicate the intrinsic predictability of the control flow that can be exploited by an ILP ...
متن کاملRehashable BTB: An Adaptive Branch Target Buffer to Improve the Target Predictability of Java Code
Abstract. Java programs are increasing in popularity and prevalence on numerous platforms, including high-performance general-purpose processors. The dynamic characteristics of the Java runtime system present unique performance challenges for several aspects of microarchitecture design. In this work, we focus on the effects of indirect branches on branch target address prediction performance. R...
متن کاملArchitectural Issues in Java Runtime Systems
The Java Virtual Machine (JVM) is the corner stone of Java technology, and its eeciency in executing the portable Java bytecodes is crucial for the success of this technology. Interpretation, Just-In-Time (JIT) compilation , and hardware realization are well known solutions for a JVM, and previous research has proposed optimizations for each of these techniques. However, each technique has its ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2000